[AD] Scalaアプリケーションの開発・保守は合同会社ミルクソフトにお任せください
この記事では、Scala 3にて廃止予定のシンボルリテラルについて解説します。
シンボルリテラルは廃止される予定
シンボルは、わずかな定数時間で比較できる便利なデータ構造として導入されました。
かつてはMapのキーなどに用いられました。
これに対して、文字列の比較は文字数の分だけ計算量が変化します。
とはいえ、シンボルやシンボルリテラルは使用頻度が低く、維持するメリットよりデメリットのほうが上回ると考えられたので、シンボルリテラルはサポートされなくなりました。
scala.Symbol
クラスはまだ存在しますので、シンボルリテラル'xyz
はSymbol("xyz")
と変換されます。
しかし、そのSymbol
クラスも将来的に非推奨となり削除される予定です。
代わりにプレーン文字列リテラル'xyz'
を使いましょう。
移行は3.0にアップデートしてからでOK
Scala 2.13では既に非推奨となっていますが、3.0でも使用することができます。
3.0においてシンボルリテラルを書くと、通常ではコンパイルエラーになります。
しかし移行オプション3.0-migration
を設定すると、以前と同様に使用することができます。
さらに、移行オプション3.0-migration
を設定している際にコンパイラオプション-rewrite
を設定すると、使用箇所を自動で書き換えてもらえます。
移行オプションについてはこちらの記事をご覧ください。
便利ですので、移行作業は3.0へのアップデート後に行うことをおすすめします。
外部リンク:Dropped: Symbol Literals
サイト内検索
カテゴリ「Scala 3で廃止予定の機能」の記事
弱適合:Scala 3で廃止予定の機能(13)
DelayedInitの解説:Scala 3で廃止予定の機能(1)
[this]修飾子:Scala 3で廃止予定の機能(12)
Scala 3で変更・廃止予定の機能と移行作業についてのまとめ
シンボルリテラルの解説:Scala 3で廃止予定の機能(3)
自動適用:Scala 3で廃止予定の機能(14)
forSomeによる存在型:Scala 3で廃止予定の機能(6)
型射影:Scala 3で廃止予定の機能(7)
手続き型構文:Scala 3で廃止予定の機能(8)
先行初期化:Scala 3で廃止予定の機能(9)
do-while文の解説:Scala 3で廃止予定の機能(4)
Scala 2のマクロ:Scala 3で廃止予定の機能(5)
クラスシャドウイング:Scala 3で廃止予定の機能(10)
XMLリテラルの解説:Scala 3で廃止予定の機能(2)
大域脱出:Scala 3で廃止予定の機能(11)
カテゴリ「Scala 3で廃止予定の機能」の記事
弱適合:Scala 3で廃止予定の機能(13)
DelayedInitの解説:Scala 3で廃止予定の機能(1)
[this]修飾子:Scala 3で廃止予定の機能(12)
Scala 3で変更・廃止予定の機能と移行作業についてのまとめ
シンボルリテラルの解説:Scala 3で廃止予定の機能(3)
自動適用:Scala 3で廃止予定の機能(14)
forSomeによる存在型:Scala 3で廃止予定の機能(6)
型射影:Scala 3で廃止予定の機能(7)
手続き型構文:Scala 3で廃止予定の機能(8)
先行初期化:Scala 3で廃止予定の機能(9)
do-while文の解説:Scala 3で廃止予定の機能(4)
Scala 2のマクロ:Scala 3で廃止予定の機能(5)
クラスシャドウイング:Scala 3で廃止予定の機能(10)
XMLリテラルの解説:Scala 3で廃止予定の機能(2)
大域脱出:Scala 3で廃止予定の機能(11)